Crate addr[][src]

Robust domain name parsing using the Public Suffix List

This library allows you to easily and accurately parse any given domain name.

Examples

use addr::parser::{DomainName, DnsName};
use addr::psl::List;

// You can find out the root domain
// or extension of any given domain name
let domain = List.parse_domain_name("www.example.com")?;
assert_eq!(domain.root(), Some("example.com"));
assert_eq!(domain.suffix(), "com");

let domain = List.parse_domain_name("www.食狮.中国")?;
assert_eq!(domain.root(), Some("食狮.中国"));
assert_eq!(domain.suffix(), "中国");

let domain = List.parse_domain_name("www.xn--85x722f.xn--55qx5d.cn")?;
assert_eq!(domain.root(), Some("xn--85x722f.xn--55qx5d.cn"));
assert_eq!(domain.suffix(), "xn--55qx5d.cn");

let domain = List.parse_domain_name("a.b.example.uk.com")?;
assert_eq!(domain.root(), Some("example.uk.com"));
assert_eq!(domain.suffix(), "uk.com");

let name = List.parse_dns_name("_tcp.example.com.")?;
assert_eq!(name.suffix(), Some("com."));

// In any case if the domain's suffix is in the list
// then this is definately a registrable domain name
assert!(domain.has_known_suffix());

Modules

dns

DNS types

domain

Domain name types

email

Email address types

error

The errors returned by this crate

net

Network types

parser

Parser traits

psl

The default implementation of the public suffix list this crate uses

Type Definitions

Result

Custom result type